package com.itheima.controller;

import com.alibaba.cloud.nacos.discovery.NacosServiceDiscovery;
import com.alibaba.nacos.api.exception.NacosException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
/**
 * @author Administrator
 * @version 1.0
该函数的功能是通过Nacos服务发现机制调用远程服务，并返回结果。具体逻辑如下：
获取服务实例：从Nacos中获取名为quickstart-provider的服务实例列表，并选取第一个实例。
构造服务地址：根据获取的实例信息（主机和端口），拼接成目标服务的URL。
发送HTTP请求：使用RestTemplate向目标服务发送GET请求，请求路径为/nacos/service/{str}，并将返回结果作为字符串返回给客户端。
 **/
@RestController
public class ConsumerController {
    @Autowired
    private RestTemplate restTemplate;
    @Autowired
    private NacosServiceDiscovery serviceDiscovery;
    @GetMapping(value = "/nacos/consumer/{str}")
    public String getService(@PathVariable("str") String str) throws 
        NacosException {
        //从Nacos中获取服务地址
        ServiceInstance serviceInstance = 
            serviceDiscovery.getInstances("quickstart-provider").get(0);
        String url = serviceInstance.getHost() + ":" +  
             serviceInstance.getPort();
        return restTemplate.getForObject("http://" + url + "/nacos/service/"+
            str, String.class);
    }
}